﻿namespace Preactor.ObjectModelExtensions.Entities
{
    public sealed class ConstraintUsage
    {
        public string Name { get; private set; }

        public int Value { get; private set; }

        public static readonly ConstraintUsage IncrementFromStart = new ConstraintUsage(1, "Increment from Start");
        public static readonly ConstraintUsage IncrementFromEnd = new ConstraintUsage(2, "Increment from End");
        public static readonly ConstraintUsage DecrementFromStart = new ConstraintUsage(3, "Decrement from Start");
        public static readonly ConstraintUsage DecrementFromEnd = new ConstraintUsage(4, "Decrement from End");
        public static readonly ConstraintUsage IncrementForProcessTimeOnly = new ConstraintUsage(5, "Increment for Process Time Only");
        public static readonly ConstraintUsage DecrementForProcessTimeOnly = new ConstraintUsage(6, "Decrement for Process Time Only");
        public static readonly ConstraintUsage NoChange = new ConstraintUsage(7, "No Change");
        public static readonly ConstraintUsage IncrementToEnd = new ConstraintUsage(8, "Increment To End");
        public static readonly ConstraintUsage DecrementToEnd = new ConstraintUsage(9, "Decrement To End");
        public static readonly ConstraintUsage IncrementSetupTimeOnly = new ConstraintUsage(10, "Increment Setup Time Only");
        public static readonly ConstraintUsage DecrementSetupTimeOnly = new ConstraintUsage(11, "Decrement Setup Time Only");
        public static readonly ConstraintUsage IncrementFromStartOfSetup = new ConstraintUsage(12, "Increment From Start Of Setup");
        public static readonly ConstraintUsage DecrementFromStartOfSetup = new ConstraintUsage(13, "Decrement From Start Of Setup");
        public static readonly ConstraintUsage IncrementForEntireJob = new ConstraintUsage(14, "Increment For Entire Job");
        public static readonly ConstraintUsage DecrementForEntireJob = new ConstraintUsage(15, "Decrement For Entire Job");
    
        private ConstraintUsage(int value, string name)
        {
            Name = name;
            Value = value;
        }

        public override string ToString()
        {
            return string.Format("{0}:{1}", Value, Name);
        }
    }
}
